#!/usr/bin/env python
# -*-coding: utf-8 -*-
# Filename: detalle_del_ticket.py

##
# Módulos del sistema
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"

try:
    from lib.funciones_utiles import close, add_find_column
except ImportError, error:
    print error
    print "Error en detalle_del_ticket.py"

class DetalleDelTicket:
    """
    Permitira desplegar el detalle del ticket
    """
    def __init__(self, padre, ticket):
        self.gladefile = "gui/ghhp.glade"
        self.wTree = gtk.glade.XML(self.gladefile,"DetalleDelTicket")
        self.window = self.wTree.get_widget("DetalleDelTicket")
        # Establecemos el padre
        self.padre = padre
        self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
        self.window.set_transient_for(self.padre.window)
        self.window.resize(800,550)
        self.un_dict = {"on_cancelbutton12_clicked": self.close}
        self.wTree.signal_autoconnect(self.un_dict)
        # Variables necesarias:
        self.legajo = self.wTree.get_widget("label367")
        self.apellido = self.wTree.get_widget("label368")
        self.nombre = self.wTree.get_widget("nombre")
        self.descripcion_cargo = self.wTree.get_widget("label370")
        self.telefono_interno = self.nombre = self.wTree.get_widget("label353")
        self.telefono_externo = self.nombre = self.wTree.get_widget("label362")
        self.domicilio = self.wTree.get_widget("label358")
        self.numero = self.wTree.get_widget("label359")
        self.oficina = self.wTree.get_widget("label360")
        self.piso =  self.wTree.get_widget("label361")
        self.find_view = self.wTree.get_widget("treeview15")
        self.find_obs = self.wTree.get_widget("treeview33")
        self.find_list = gtk.ListStore(str, str, str, str, str, str)
        self.find_view.set_model(self.find_list)
        self.find_list_obs = gtk.ListStore(str, str, str)
        self.find_obs.set_model(self.find_list_obs)
        # Creamos las cabeceras de la vistas resultado
        self.armar_listas_resultados()
        #Datos estaticos
        self.legajo.set_text(ticket.empleado.legajo)
        self.apellido.set_text(ticket.empleado.apellido)
        self.nombre.set_text(ticket.empleado.nombre)
        # Mostramos el historico
        self.mostrar_datos(ticket)

    def armar_listas_resultados(self):
        # Historico ticket
        titulos = ["Fecha de cambio\n de estado", "Hora de cambio\n de estado",
                "Usuario que\ncambio el estado", "Estado", "Grupo de\nResolucion",
                 "Clasificacion"]
        for pos, titulo in enumerate(titulos):
            add_find_column(titulo, pos, self.find_view)
        # Historico de la clasificacion
        titulos = ["Fecha", "Hora", "Descripcion"]
        for pos, titulo in enumerate(titulos):
            add_find_column(titulo, pos, self.find_obs)

    def close(self, widget):
        print "close"
        self.window.destroy()

    def mostrar_datos(self, ticket):
        # Datos del empleado solicitante
        #self.legajo.set_text(ticket.empleado_.legajo)
        #self.apellido.set_text(ticket.empleado_.apellido)
        #self.nombre.set_text(ticket.empleado_.nombre)
        #self.descripcion_cargo
        # Telefonos
        if ticket.empleado.telefono_interno:
            self.telefono.set_text(ticket.empleado.telefono_interno)
        else:
            self.telefono_interno.set_text('No posee')
        if ticket.empleado.telefono_externo:
            self.telefono_externo.set_text(ticket.empleado.telefono_externo)
        else:
            self.telefono_externo.set_text('No posee')
        # Domicilio
        try:
            self.domicilio.set_text(ticket.empleado.direcciones[-1].domicilio)
            self.numero.set_text(ticket.empleado.direcciones[-1].numero)
            self.oficina.set_text(ticket.empleado.direcciones[-1].oficina)
            self.piso.set_text(ticket.empleado.direcciones[-1].piso)
        except IndexError, error:
            pass
        # Armar historial
        for i,he in enumerate(ticket.historial_de_estado):
            lista = [he.fecha.strftime("%d-%m-%Y"),
                    he.fecha.strftime("%H:%M"),
                    he.usuario.u_legajo,
                    he.estado.nombre,
                    ticket.historial_de_clasificacion[0].clasificacion.nombre,
                    ticket.grupo_de_resolucion.nombre]
            self.find_list.append(lista)
        # Observaciones
        for intervencion in ticket.intervenciones:
            for obs in intervencion.observaciones:
                lista = [obs.fecha.strftime("%d-%m-%Y"),
                        obs.fecha.strftime("%H:%M"),
                        obs.descripcion]
                self.find_list_obs.append(lista)


